/**
 * 
 */

package CCT220_Aula13_Exercicio03_13106.view;


import javax.swing.JOptionPane;

import CCT220_Aula13_Exercicio03_13106.control.ControleAluno;


/**
 * </br>******************************
 * </br>Project: CCT220
 * </br>Package: CCT220_Aula13_Exercicio03_13106.view
 * </br>Class: LimiteAluno
 * </br>Last Change: 04/10/2011 22:01:19
 * </br>Description: Implement the visual part of the Aluno's entity
 * </br>******************************</br>
 * 
 * @author marcel
 * @author 13106
 * 
 */
public class LimiteAluno {

	private final ControleAluno ctrAluno;


	/**
	 * </br>******************************
	 * </br>Constructor for
	 * </br>Package: CCT220_Aula13_Exercicio03_13106.view
	 * </br>Class: LimiteAluno
	 * </br>LastChange: 04/10/2011 22:01:03
	 * </br>******************************</br>
	 * 
	 * @param ctrAluno
	 */
	public LimiteAluno(ControleAluno ctrAluno) {

		this.ctrAluno = ctrAluno;
		capturaDados();
	}


	/**
	 * </br>******************************
	 * </br>Package: CCT220_Aula13_Exercicio03_13106.view
	 * </br>Class: LimiteAluno
	 * </br>Method: capturaDados
	 * </br>Last Change: 04/10/2011 22:00:57
	 * </br>Description: Generates a menu in a JOptionPane
	 * </br>******************************</br>
	 * 
	 */
	private void capturaDados() {

		int escolha;
		do {
			do {
				String escolhaInformada = JOptionPane
				        .showInputDialog("Escolha uma opção do menu:\n"
				                + "[1] Adicionar aluno\n"
				                + "[2] Listar um aluno\n"
				                + "[3] Listar alunos\n"
				                + "[4] Remover aluno \n"
				                + "[5] Finalizar programa");
				escolha = Integer.parseInt(escolhaInformada);
			} while ((escolha < 1) || (escolha > 5));
			if (escolha != 5) {
				execEscolha(escolha);
			} else {
				System.exit(0);
			}
		} while (true);
	}


	/**
	 * </br>******************************
	 * </br>Package: CCT220_Aula13_Exercicio03_13106.view
	 * </br>Class: LimiteAluno
	 * </br>Method: execEscolha
	 * </br>Last Change: 04/10/2011 22:00:51
	 * </br>Description: Chose the correct way according to opcao
	 * </br>******************************</br>
	 * 
	 * @param opcao
	 */
	private void execEscolha(int opcao) {

		switch (opcao) {
			case 1:
				cadastraAluno();
				break;
			case 2:
				int intLSearchCodigo = Integer.parseInt(JOptionPane
				        .showInputDialog("Digite o codigo do Aluno"));
				imprimeAluno(intLSearchCodigo);
				break;

			case 3:
				imprimeAlunos();
				break;

			case 4:
				int intRemoveCodigo = Integer.parseInt(JOptionPane
				        .showInputDialog("Digite o codigo do Aluno"));
				removeAluno(intRemoveCodigo);
				break;
			default:
				break;

		}
	}


	/**
	 * </br>******************************
	 * </br>Package: CCT220_Aula13_Exercicio03_13106.view
	 * </br>Class: LimiteAluno
	 * </br>Method: removeAluno
	 * </br>Last Change: 04/10/2011 22:00:46
	 * </br>Description: Call ctrAluno.removeAluno() and show
	 * </br>******************************</br>
	 * 
	 * @param intLCodigo
	 */
	private void removeAluno(int intLCodigo) {

		JOptionPane.showMessageDialog(null, ctrAluno.removeAluno(intLCodigo)
		        + "\nRemovido do cadastro", "Remocao de Aluno",
		        JOptionPane.INFORMATION_MESSAGE);

	}


	/**
	 * </br>******************************
	 * </br>Package: CCT220_Aula13_Exercicio03_13106.view
	 * </br>Class: LimiteAluno
	 * </br>Method: cadastraAluno
	 * </br>Last Change: 04/10/2011 22:00:40
	 * </br>Description: Read some data and call ctrAluno.insereAluno()
	 * </br>******************************</br>
	 * 
	 */
	private void cadastraAluno() {

		int codigo = Integer.parseInt(JOptionPane
		        .showInputDialog("Informe o codigo"));
		String nome = JOptionPane.showInputDialog("Informe o nome");
		String endereco = JOptionPane.showInputDialog("Informe o endereco");
		ctrAluno.insereAuno(codigo, nome, endereco);
	}


	/**
	 * </br>******************************
	 * </br>Package: CCT220_Aula13_Exercicio03_13106.view
	 * </br>Class: LimiteAluno
	 * </br>Method: imprimeAlunos
	 * </br>Last Change: 04/10/2011 22:00:34
	 * </br>Description: Call ctrAluno.imprimeAlunos() and show
	 * </br>******************************</br>
	 * 
	 */
	private void imprimeAlunos() {

		JOptionPane.showMessageDialog(null, ctrAluno.imprimeAlunos(),
		        "Relação de Alunos", JOptionPane.INFORMATION_MESSAGE);
	}


	/**
	 * </br>******************************
	 * </br>Package: CCT220_Aula13_Exercicio03_13106.view
	 * </br>Class: LimiteAluno
	 * </br>Method: imprimeAluno
	 * </br>Last Change: 04/10/2011 22:00:29
	 * </br>Description: Call ctrAluno.imprimeAluno() and show
	 * </br>******************************</br>
	 * 
	 * @param pCodigo
	 */
	private void imprimeAluno(int pCodigo) {

		JOptionPane.showMessageDialog(null, ctrAluno.imprimeAluno(pCodigo),
		        "Informações do Aluno", JOptionPane.INFORMATION_MESSAGE);
	}
}
